class Solution {
    public int maxSubArray(int[] nums) {
        int ans = nums[0];
        int sum = 0;
        for(int i = 0;i<nums.length;i++) {
            //前面的和是负数,如果后面是正数的话直接不要前面的了,如果后面是正数再加负数也会继续变小
            //如果前面的和是正数就继续往后加,会变大
            sum = Math.max(sum+nums[i],nums[i]);
            ans = Math.max(ans,sum);
        }
        return ans;
    }
}